﻿using System;
using System.Configuration;
using System.Collections.Generic;
using System.Net;
using System.Net.Mail;
using Annuaire;

namespace annuairedotnet
{
    /// <summary>
    /// Description résumée de ContactService
    /// </summary>
    public class ContactService
    {
        public ContactService() { }

        // Enregistrement d'un contact (création ou modification)
        public static void saveContact(Contact contact)
        {
            ContactDao.saveOrUpdate(contact);
        }

        // Récupération d'un contact en fonction de son id
        public static Contact getById(int id)
        {
            return ContactDao.getById(id);
        }

        // Récupération des contacts en fonction des criteres renseignés
        public static IList<Contact> searchContact(ContactCritere critere)
        {
            if (critere == null)
            {
                return ContactDao.getAll();
            }
            else
            {
                return ContactDao.getByCritere(critere);
            }
        }

        // Suppression d'un contact en fonction de son id
        public static void removeContact(int id)
        {
            ContactDao.removeContact(ContactDao.getById(id));
        }

        // Méthode d'envoi d'email
        public static Boolean sendMail(string expediteur, string destinataire, string sujet, string message)
        {
            MailMessage email = new MailMessage();
            Boolean ok = false;

            string serveur = ConfigurationSettings.AppSettings["SmtpServeur"];
            string utilisateur = ConfigurationSettings.AppSettings["SmtpUtilisateur"];
            string password = ConfigurationSettings.AppSettings["SmtpPassword"];

            email.From = new MailAddress(expediteur);
            email.To.Add(new MailAddress(destinataire));
            email.Subject = sujet;
            email.Body = message;

            SmtpClient smtp = new SmtpClient();
            smtp.Host = serveur;
            smtp.Credentials = new NetworkCredential(utilisateur, password);

            try
            {
                smtp.Send(email);
                ok = true;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                ok = false;
            }
            return ok;
        }
    }
}
